#include "Timer.h"

Timer::Timer() {
	startTicks = 0;
	pausedTicks = 0;
	paused = false;
	started = false;
}

void Timer::start() {
	started = true;
	paused = false;
	startTicks = SDL_GetTicks();
}

void Timer::stop(){
	started = false;
	paused = false;
}

void Timer::pause() {
	// Si el timer esta corriendo y no fue pausado
	if( ( started == true ) && ( paused == false ) ) {
		paused = true;

		// Calculamos los ticks pausados
		pausedTicks = SDL_GetTicks() - startTicks;
    }
}

void Timer::unpause() {

    if( paused == true ) {
        paused = false;
        startTicks = SDL_GetTicks() - pausedTicks;
        pausedTicks = 0;
    }
}

int Timer::get_ticks() {
    // Si el timer esta corriendo
    if( started == true ) {
        if( paused == true ) {
            return pausedTicks;
        }
        else {
            return SDL_GetTicks() - startTicks;
        }
    }

    // Si el timer no esta corriendo
    return 0;
}

bool Timer::is_started() {
	return started;
}

bool Timer::is_paused() {
	return paused;
}
